package general;

import java.util.Date;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;


@Entity
@Table(name="poste")
public class Poste {
	
	
	@Id
	@Column(name="poste_id")
	@GeneratedValue(strategy=GenerationType.AUTO)
	private long id;
	
	private String titre;	
	
	@ManyToOne
	@JoinColumn(name="personne_id")
	private Personne personne;
	
	@OneToOne(cascade=CascadeType.ALL)
	@JoinColumn(name="entreprise_id", referencedColumnName="entreprise_id")
	private Entreprise entreprise;	
	
	@Temporal( TemporalType.TIMESTAMP)
	private Date date_debut;

	@Temporal( TemporalType.TIMESTAMP)
	private Date date_fin;
	
	public Poste(){
		
	}

	public void setPersonne(Personne personne) {
		this.personne = personne;
	}

	public Personne getPersonne() {
		return personne;
	}

	public void setEntreprise(Entreprise entreprise) {
		this.entreprise = entreprise;
	}

	public Entreprise getEntreprise() {
		return entreprise;
	}

	public void setDate_debut(Date date_debut) {
		this.date_debut = date_debut;
	}

	public Date getDate_debut() {
		return date_debut;
	}

	public void setDate_fin(Date date_fin) {
		this.date_fin = date_fin;
	}

	public Date getDate_fin() {
		return date_fin;
	}

	public void setTitre(String titre) {
		this.titre = titre;
	}

	public String getTitre() {
		return titre;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result
				+ ((entreprise == null) ? 0 : entreprise.hashCode());
		result = prime * result
				+ ((personne == null) ? 0 : personne.hashCode());
		result = prime * result + ((titre == null) ? 0 : titre.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Poste other = (Poste) obj;
		if (entreprise == null) {
			if (other.entreprise != null)
				return false;
		} else if (!entreprise.equals(other.entreprise))
			return false;
		if (personne == null) {
			if (other.personne != null)
				return false;
		} else if (!personne.equals(other.personne))
			return false;
		if (titre == null) {
			if (other.titre != null)
				return false;
		} else if (!titre.equals(other.titre))
			return false;
		return true;
	}

	public void setId(long id) {
		this.id = id;
	}

	public long getId() {
		return id;
	}	
	
}
